package com.intelligent.service;

import com.intelligent.pojo.ProductionWarehousing;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Date;

/**
* @author lenovo
* @description 针对表【production_warehousing(生产入库表)】的数据库操作Service
* @createDate 2025-09-08 10:02:48
*/
public interface ProductionWarehousingService extends IService<ProductionWarehousing> {

    /**
     * 分页查询生产入库记录（包含关联信息和条件查询）
     * 
     * @param page 分页参数
     * @param warehousingNo 入库单号
     * @param warehousingStatus 入库状态
     * @param workOrderNo 工单编号
     * @param warehouseId 仓库ID
     * @param uId 入库人ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 分页结果
     */
    IPage<ProductionWarehousing> getProductionWarehousingPage(
            Page<ProductionWarehousing> page,
            String warehousingNo,
            Integer warehousingStatus,
            String workOrderNo,
            Long warehouseId,
            Integer uId,
            Date startTime,
            Date endTime
    );

    /**
     * 根据ID查询生产入库记录详情（包含关联信息）
     * 
     * @param id 入库记录ID
     * @return 入库记录详情
     */
    ProductionWarehousing getProductionWarehousingById(Long id);

    /**
     * 新增生产入库记录（自动生成入库单号）
     * 
     * @param productionWarehousing 生产入库记录信息
     * @return 是否新增成功
     */
    boolean addProductionWarehousing(ProductionWarehousing productionWarehousing);

    /**
     * 修改生产入库记录
     * 
     * @param productionWarehousing 生产入库记录信息（必须包含id）
     * @return 是否修改成功
     */
    boolean updateProductionWarehousing(ProductionWarehousing productionWarehousing);

    /**
     * 删除生产入库记录
     * 
     * @param id 入库记录ID
     * @return 是否删除成功
     */
    boolean deleteProductionWarehousing(Long id);
}
